Aller au contenu principal

Automatiser ses déploiements

Ansitrano

Honteusement copié d'ici (sauf l'inventaire) : https://www.formatux.fr/formatux-devops/module-025-ansible-ansistrano/index.html

D'où le lancer ?

le playbook peut-être executé à partir d'un poste client ou bien d'un des serveurs fronts.

Ou avec docker :

https://hub.docker.com/r/lavoweb/ansistrano/

Prérequis

Installer ansible et le role ansistrano

Sous Linux avec pipx

pipx install --include-deps ansible

puis, lancer la commande

ansible-galaxy role install ansistrano.deploy

pour installer le rôle.

Définition de l'inventaire (les serveurs cibles)

 cat  hosts
---
all:
children:
prod:
children:
web:
hosts:
ns3047.ip-162-19.eu:65022:
ns3150.ip-141-95.eu:65022:

Définition du playbook (liste des actions à executer)

 cat playbook-deploy.yml
---
- hosts: web
become: yes
vars:
dest: "/var/www/site/"
ansistrano_deploy_via: "git"
ansistrano_git_repo: https://framagit.org/alemorvan/demo-ansible.git
ansistrano_deploy_to: "{{ dest }}"
ansistrano_keep_releases: 3
ansistrano_git_branch: 'releases/v1.1.0'

roles:
- { role: ansistrano.deploy }

Execution du playbook

ansible-playbook -i hosts playbook-deploy.yml

Vérification

~# tree --charset=ascii /var/www/site/
/var/www/site/
|-- current -> ./releases/20240528130448Z
|-- releases
| |-- 20240528125858Z
| | |-- REVISION
| | `-- html
| | `-- index.htm
| |-- 20240528130230Z
| | |-- REVISION
| | `-- html
| | `-- index.htm
| `-- 20240528130448Z
| |-- REVISION
| `-- html
| `-- index.htm
|-- repo
| `-- html
| `-- index.htm
`-- shared

12 directories, 7 files

A chaque révision, un pull est effectué et le lien symbolique current̀̀̀ est recréé pour pointer sur la dernière version.

Le rollback est facile, car les anciennes sont sauvegardées.

Ansistrano et MySQL

Import de données et migration de schéma

https://symfonycasts.com/screencast/ansistrano/database-setup